package cn.assumejson.springframework.beans.factory;

/**
 * @author Mr. Li
 * @version 1.0
 * @since 1.0 2021/12/1 14:08
 */
public interface FactoryBean<T> {

    /**
     * 获取FactoryBean 中的自定义对象
     * 如果返回不会null，会终于后续的Bean生命周期，直接执行初始化后的后置处理器
     *
     * @return Object
     * @throws Exception
     */
    T getObject() throws Exception;


    /**
     * 判断该自定义Bean 是什么类型.提供在创建Bean时，做类型判断。在getBean时，getBeanByType进行筛选的接口
     *
     * @return
     */
    Class<?> getObjectType();


    /**
     * 是否单例
     *
     * @return
     */
    default boolean isSingleton() {
        return true;
    }

}
